package com.junqi.msg.job;

import com.junqi.common.entity.RedisKeyManager;
import com.junqi.msg.utils.RedisUtil;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.util.HashSet;
import java.util.Set;

/**
 ***********************************    下行限速（丢弃）策略 达到最大值后最“老”的消息将被淘汰丢弃   *********************************
 * 定时删除直播间消息队列中的消息
 */
@Component
public class DelRoomMsgJob {

    // 每分钟执行一次
    @Scheduled(fixedRate = 60000)
    public void delRoomMsg() {

        //redis获取所有开播的房间id
        Set<String> roomSet=new HashSet<>();
        for (String roomId : roomSet) {
            //获取 消息队列 的条数
            Long count = RedisUtil.zCard(RedisKeyManager.generateKey(RedisKeyManager.ROOM_MSG,roomId));
            if (count != null && count > 1000) {
                // 删除前 500 条记录
                RedisUtil.zRemoveRange(RedisKeyManager.generateKey(RedisKeyManager.ROOM_MSG,roomId), 0, 499);
            }
        }
    }
}
